<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title></title>
</head>

<body>


	<script type="text/javascript">
		//1.字面量
		//其实就是一个值，含义就是字面上的意思，也就是等号右边的值
		// console.log(1,'hello',true,'a')

		//2.变量
		//可以变化的量，从开发的角度，变量就是存放数据的容器
		//怎么声明一个变量 ？ var + 变量名

		//①声明一个变量
		var a

		//②赋值
		var a = 3
		console.log(a)

		//③变量的初始化
		var s = 100
		console.log(s)

		//④变量的重新赋值
		s = 52
		console.log(s)

		//⑤一次性声明多个变量
		var m = 6, n = 7
		console.log(m, n)

		//⑥变量不声明就使用，会报错
		// console.log(c) //c is not defined

		//⑦变量的提升
		console.log(x) //undefined  下面声明升上，
		var x = 'hhh'
		console.log(x) //hhh

		// --->
		var x;  //变量的声明提升
		console.log(x)
		x = 'hhh' //赋值不提升
		console.log(x)

		/*
			变量声明的提升，简称变量提升
			在es6以前的版本，js可以先使用变量，再定义变量，不会报错
			
			js是解释性语言，边解析边执行。但在浏览器解析之前，会有一个预解析的过程

			----预解析的过程：
				对当前js定义的所以的变量（和函数），放到所有代码的最前面

				var a = 10
				var b = 20
				var c = 30

				===========预解析：只提升声明不提示赋值
				
				var a
				var b
				var c

				a=10
				b=20
				c=30
		*/
	</script>
</body>

</html>